#!/bin/bash
# ********************************************************************************
# * Description  :  新增mysql分区,新增接下来"CYCLE_DAYS"天的分区
#*
# *参数：
#*		MYSQL_HOST		mysql的ip
#*		TAR_USERNAME	数据库用户名
#*		TAR_PASSWORD	数据库密码
#*		MYSQL_DATABASE	数据库库名
#*
#*		TABLE_NAME		表名
#*		IN_TRADE_DATE 当前业务日期
#*		CYCLE_DAYS	  新增分区的天数
# * Copyright © 2023 西南证券. All Rights Reserved.
# ********************************************************************************
# 配置 MySQL 连接信息
MYSQL_HOST=${MYSQL_HOST}
MYSQL_PORT="3306"
MYSQL_USER=${TAR_USERNAME}
MYSQL_PASSWORD=${TAR_PASSWORD}
MYSQL_DATABASE=${MYSQL_DATABASE}
#表名
TABLE_NAME=${TABLE_NAME}
#循环新增分区的天数
CYCLE_DAYS=${CYCLE_DAYS}
# 获取当前日期
#CURRENT_DATE=$(date +%Y-%m-%d)
CURRENT_DATE=${IN_TRADE_DATE}

# 循环新增接下来CYCLE_DAYS天的分区
for ((i=0; i<$CYCLE_DAYS; i++))
do
  PARTITION_DATE=$(date -d "$CURRENT_DATE + $i day" +%Y%m%d)
  PARTITION_VALUE=$(($PARTITION_DATE + 1))
  echo "当前准备检测的分区是 $PARTITION_DATE"

  SQL1="SELECT partition_name FROM information_schema.partitions WHERE table_schema = '$MYSQL_DATABASE' AND table_name = '$TABLE_NAME' AND partition_name = $PARTITION_DATE;"
  echo "拼接的SQL1为: $SQL1"
  
  SQL2="ALTER TABLE $TABLE_NAME ADD PARTITION (PARTITION \`$PARTITION_DATE\` VALUES LESS THAN ($PARTITION_VALUE));"
  echo "拼接的SQL2为: $SQL2"
  
  # 检查分区是否存在
  EXISTING_PARTITION=$(mysql -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} -D${MYSQL_DATABASE} -e "$SQL1" --skip-column-names)
  
  echo "EXISTING_PARTITION值为：$EXISTING_PARTITION"

  if [ -z "$EXISTING_PARTITION" ]; then
    # 分区不存在，创建新分区
    mysql -h ${MYSQL_HOST} -P ${MYSQL_PORT} -u ${MYSQL_USER} -p${MYSQL_PASSWORD} -D${MYSQL_DATABASE} -e "$SQL2"
    echo "分区不存在,已创建新分区成功: $PARTITION_DATE"
  else
    # 分区已存在，不执行任何操作
    echo "分区 $PARTITION_DATE 已存在,不执行任何操作"
  fi
done


curl -X POST "http://172.18.10.18:33063/api/aiElastic/esDataHandle/exist_forecast" -H 'Content-Type:application/json' -d '{"investAdvisorId":"888800546", "prodType":"1","prodCode":"014558"}'